Goniometrické funkcie

V nasledujúcich príkladoch budeme vyšetrovať priebeh goniometrických funkcií a kresliť ich grafy. Sú to funkcie definované predpisom $$y = \sin x \\ y = \cos x \\ y = \tan x.$$

Pri vyšetrovani priebehu každej takejto funkcie nás tu zaujímajú predovšetkým tieto informácie:

  • obor definície funkcie;
  • intervaly, na ktorých je funkcia monotónna;
  • asymptoty grafu funkcie;
  • globálne a lokálne extrémy funkcie;
  • nulové body funkcie.

Dokumentácia:

In [1]:
import numpy as np
%matplotlib inline
import matplotlib.pyplot as plt
from maux import *

Príklad

Nakreslenie grafu funkcie $$y = \sin x$$ na intervale $\langle -2 \pi, 4 \pi \rangle$.

In [2]:
#### vstupné údaje
def f(X): return np.sin(X)
X = np.linspace(-2*np.pi, 4*np.pi, 12*10+1)
Y = f(X)

#### obrázok s jedným diagramom
fig, ax = plt.subplots()
fig.set_size_inches(12, 2)

### diagram
init_subplot(ax)
ax.set_title(r"Graf funkcie $y = \sin\ x$")

## graf funkcie
ax.plot(X, Y)

## 1. súradnicová os
xtick_numerators = range(-4, 8+1)
ax.set_xticks([n * np.pi / 2  for n in xtick_numerators])
ax.set_xticklabels([smart_tick(n, r"\pi", 2)  for n in xtick_numerators])
#ax.set_xticklabels([r'$-2\pi$', r'$-3\pi/2$', r'$-\pi$', r'$-\pi/2$', r'$0$', r'$\pi/2$', r'$\pi$', r'$3\pi/2$', r'$2\pi$', r'$5\pi/2$', r'$3\pi$', r'$7\pi/2$', r'$4\pi$']) # (takmer) to isté, len zapísané iným spôsobom

## 2. súradnicová os
ax.set_yticks([-1, 0, 1])

## spoločné nastavenia pre obe osi
ax.axis('equal')

### archivácia obrázka
#plt.savefig("ex04_1_1.png")

### samotné zobrazenie
plt.show()
plt.close('all') 

Príklad

Vyšetrenie priebehu funkcie $$y = \sin x$$ na intervale $\langle 0, 2 \pi \rangle$.

In [3]:
#### vstupné údaje
def f(X): return np.sin(X)
X = np.linspace(0, 2*np.pi, 2*50+1)

#### obrázok s dvoma diagramami
fig, (ax1, ax2) = plt.subplots(nrows=1, ncols=2, sharex=True, sharey=True)
fig.set_size_inches(12, 2)

### 1. diagram
init_subplot(ax1)
ax1.set_title(r"Graf funkcie $y = \sin\ x$")

## graf funkcie
ax1.plot(X, f(X))

### 2. diagram
init_subplot(ax2)
ax2.set_title("Priebeh funkcie")

## intervaly, na ktorých je funkcia monotónna
X1 = X[X <= np.pi/2]
XY1 = ax2.plot(X1, f(X1), label="rastúca")
X2 = X[(np.pi/2 <= X) & (X <= 3*np.pi/2)]
ax2.plot(X2, f(X2), label="klesajúca")
X3 = X[3*np.pi/2 <= X] 
ax2.plot(X3, f(X3), c=XY1[0].get_color())

## nulové body
ax2.plot(0, 0, 'ko', label="nulový bod")
ax2.plot(np.pi, 0, 'ko')
ax2.plot(2*np.pi, 0, 'ko')

## extrémy
ax2.plot(np.pi/2, 1, 'ro', label="maximum")
ax2.plot(3*np.pi/2, -1, 'mo', label="minimum")

## zvyšné nastavenia 2. diagramu
ax2.legend(loc=(1, 0.15))
ax2.grid()

### spoločné nastavenie pre oba diagramy
xtick_numerators = range(0, 4+1)
plt.xticks([n * np.pi / 2  for n in xtick_numerators], 
           [smart_tick(n, r"\pi", 2)  for n in xtick_numerators])
plt.yticks([-1, 0, 1])

### archivácia obrázka
#plt.savefig("ex04_1_2.png")

### samotné zobrazenie
plt.show()
plt.close('all')

Úloha

Nakreslite do jedného obrázka grafy sínusov $$y = \sin nx$$ na intervale $\langle -2 \pi, 4 \pi \rangle$ pre $n = \frac{1}{2}, 1, 2$.

Príklad

To isté ako v predchadzajúcom príklade, len vykreslenie sa deje pomocou interaktívnych prvkov knižnice ipywidgets.

In [4]:
#### vstupné údaje
def f(X, n): return np.sin(n*X)
X = np.linspace(-2*np.pi, 4*np.pi, 12*100+1)

#### obrázok s grafom sin nx
def plot_sin(n):
    fig, ax = plt.subplots()
    fig.set_size_inches(12, 2)
    init_subplot(ax)
    ax.set_title(r"Graf funkcie $y = \sin\ {0}{{x}}$".format(n))
    ax.plot(X, f(X, n))
    xtick_numerators = range(-4, 8+1)
    ax.set_xticks([n * np.pi / 2  for n in xtick_numerators])
    ax.set_xticklabels([smart_tick(n, r"\pi", 2)  for n in xtick_numerators])
    ax.set_yticks([-1, 0, 1])
    plt.show()
    plt.close('all')

#### interaktívne vykreslenie obrázka
import ipywidgets as widgets
widgets.interact(plot_sin, n=widgets.SelectionSlider(options={'1/2': 1/2, '1': 1, '2': 2}, value=1));

Úloha (5 bodov)

Vyšetrite priebeh funkcie $$y = \frac{\sin x}{x}$$ na intervale $\langle -4 \pi, 4 \pi \rangle$.

Úloha

Nakreslite graf funkcie $$y = \cos x$$ na intervale $\langle 0, 2 \pi \rangle$.

Úloha

Vyšetrite priebeh funkcie $$y = \cos x$$ na intervale $\langle 0, 2 \pi \rangle$.

Úloha

Nakreslite do jedného obrázka grafy kosínusov $$y = \cos nx$$ na intervale $\langle -2 \pi, 4 \pi \rangle$ pre $n = \frac{1}{2}, 1, 2$.

Úloha

To isté ako v predchadzajúcom príklade, len vykreslenie nech sa deje pomocou interaktívnych prvkov knižnice ipywidgets.

Úloha

Nakreslite do jedného obrázka grafy funkcií $y = \sin x$ a $y = \cos x$ na intervale $\langle -2 \pi, 4 \pi \rangle$.

Úloha (5 bodov)

Nakreslite graf funkcie $$y = \sin\, 2x + \sin\ 4x$$ na intervale $\langle - \pi, 2 \pi \rangle$. Vyznačte nulové body tejto funkcie. Ich súradnice nevypisujte!

Úloha

Nakreslite graf funkcie $$y = \sin 20x + \sin 22x$$ na intervale $\langle - \pi, 2 \pi \rangle$.

Príklad

To isté ako v predchadzajúcich dvoch príkladoch, ale tentokrát pre funkciu $$y = \sin\, ax + \sin\ bx,$$ kde parametre nadobúdajú hodnoty $a \in \{1, \ldots, 20\}$ a $b \in \{1, \ldots, 22\}$. Vykreslenie sa deje pomocou interaktívnych prvkov knižnice ipywidgets.

In [5]:
#### vstupné údaje
def f(a, b): return np.sin(a*X) + np.sin(b*X)
X = np.linspace(-np.pi, 2*np.pi, 6*42*100+1)

#### obrázok s grafom funkcie
def plot_f(a, b): 
    fig, ax = plt.subplots()
    fig.set_size_inches(18, 4)
    init_subplot(ax)
    ax.set_title(r"Graf funkcie $y = \sin\ {0}x + \sin\ {1}x$".format(a,b))
    ax.plot(X, f(a, b))
    xtick_numerators = range(-2, 4+1)
    ax.set_xticks([n * np.pi / 2  for n in xtick_numerators])
    ax.set_xticklabels([smart_tick(n, r"\pi", 2)  for n in xtick_numerators])
    ax.set_yticks([-2, -1, 0, 1, 2])
    plt.show()
    plt.close('all')

#### interaktívne vykreslenie obrázka
import ipywidgets as widgets
widgets.interact(plot_f,
                 a=widgets.IntSlider(min=1,max=20,step=1,value=2),
                 b=widgets.IntSlider(min=1,max=22,step=1,value=4));

Príklad

Nakreslenie grafu funkcie $$y = \tan x$$ na intervale $\langle -2 \pi, 4\pi \rangle$.

In [6]:
#### vstupné údaje
def f(X): return np.tan(X)
X = np.linspace(-(5/2)*np.pi, (5/2)*np.pi, 10*100+1)

Xs = []
for n in range(-5, 5, 2):
    Xs.append(X[(n*np.pi/2 < X) & (X < (n+2)*np.pi/2)])

#### obrázok s jedným diagramom
fig, ax = plt.subplots()
fig.set_size_inches(12, 6)

### diagram
init_subplot(ax)
ax.set_title(r"Graf funkcie $y = \tan\, x$")

## graf funkcie
for X in Xs:
    ax.plot(X, f(X), c='b')

## asymptoty bez smernice
Ay = np.linspace(-5, 5)
for n in range(-5, 5+1, 2):
    Ax = np.ones(len(Ay)) * n * np.pi/2
    ax.plot(Ax, Ay, 'k--', lw=1)

## 1. súradnicová os
xtick_numerators = range(-5, 5+1)
ax.set_xticks([n * np.pi / 2  for n in xtick_numerators])
ax.set_xticklabels([smart_tick(n, r"\pi", 2)  for n in xtick_numerators])

## 2. súradnicová os
ax.set_ylim(-5, 5)

### archivácia obrázka
#plt.savefig("ex04_1_3.png")

### samotné zobrazenie
plt.show()
plt.close('all')